package com.csf.create.abs;

/**
 * 抽象工厂模式，可扩展系列产品，直接替换工厂类
 *
 工厂方法模式：
 一个抽象产品类，可以派生出多个具体产品类。
 一个抽象工厂类，可以派生出多个具体工厂类。
 每个具体工厂类只能创建一个具体产品类的实例。

 抽象工厂模式：
 多个抽象产品类，每个抽象产品类可以派生出多个具体产品类。
 一个抽象工厂类，可以派生出多个具体工厂类。
 每个具体工厂类可以创建多个具体产品类的实例，也就是创建的是一个产品线下的多个产品。

 * Date: 2018/9/6
 * Time: 12:13
 *
 * @author chenshf
 */
public class Test {

    public static void main(String[] args) {
        AbstractFactory senderFactory = FactoryProduce.produceSenderFactory();
        Sender sms = senderFactory.produceSender("sms");
        sms.send();

        AbstractFactory receiverFactory = FactoryProduce.produceReceiverFactory();
        Receiver receiver = receiverFactory.produceReceive("sms");
        receiver.receive();
    }
}
